
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.server.usuario;

import co.com.jpa.controllers.UsuarioJpaController;
import co.com.jpa.controllers.exceptions.IllegalOrphanException;
import co.com.jpa.controllers.exceptions.NonexistentEntityException;
import co.com.jpa.controllers.exceptions.PreexistingEntityException;
import co.com.entities.Usuario;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import co.com.cliente.usuario.services.UsuarioS;
import co.com.entities.Roles;
import java.math.BigDecimal;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpSession;

/**
 *
 * @author dloaiza
 */
public class UsuarioSImpl extends RemoteServiceServlet implements UsuarioS {

    public void guardarUsuario(Usuario asteroide) {
        try {
            UsuarioJpaController usuarioJpaController = (UsuarioJpaController) getServletContext().getAttribute("usuarioJpaController");
            asteroide.setCdrol(new Roles(BigDecimal.valueOf(2d)));
            usuarioJpaController.create(asteroide);
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException("Señor usuario, el usuario ya se encuentra registrado en el sistema.");
        } catch (Exception ex) {
            Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
        }
    }

    public void actualizarUsuario(Usuario asteroide) {
        try {
            UsuarioJpaController usuarioJpaController = (UsuarioJpaController) getServletContext().getAttribute("usuarioJpaController");
            asteroide.setCdrol(new Roles(BigDecimal.valueOf(2d)));
            usuarioJpaController.edit(asteroide);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
        } catch (Exception ex) {
            Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
            throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
        }
        
    }

    public void eliminarUsuarios(List<Usuario> asteroides) {
        UsuarioJpaController usuarioJpaController = (UsuarioJpaController) getServletContext().getAttribute("usuarioJpaController");
        for (Usuario usuario : asteroides) {
            try {
                usuarioJpaController.destroy(usuario.getNmdocumento());
            } catch (IllegalOrphanException ex) {
                Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
                throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(UsuarioSImpl.class.getName()).log(Level.SEVERE, null, ex);
                throw new RuntimeException("Señor usuario, Ocurrió un error en el sistema por favor intente más tarde.");
            }
        }
    }

    public List<Usuario> consultarUsuarios() {
        UsuarioJpaController usuarioJpaController = (UsuarioJpaController) getServletContext().getAttribute("usuarioJpaController");
        return usuarioJpaController.findUsuarioEntities();
    }
    
    public Usuario validarUsuario(String usuario, String contrasena) {
        UsuarioJpaController usuarioJpaController = (UsuarioJpaController) getServletContext().getAttribute("usuarioJpaController");
        Usuario usuarioO = usuarioJpaController.validateStaff(usuario, contrasena);
        
            getThreadLocalRequest().getSession().setAttribute("Usuario", usuarioO);
        
        return usuarioO;
    }
    
    public String validarUsuarioActivo(){
        Usuario usuario = (Usuario)getThreadLocalRequest().getSession().getAttribute("Usuario");
        if(usuario!=null){
            return usuario.getCdrol().getCdrol().toString();
        }
        else
        {
            return null;
        }
        
    }
}
